package com.beyond.utils;


import org.apache.log4j.Logger;

import com.beyond.constant.ApplicationConstant;

import java.io.InputStream;

import java.util.Properties;


/**
 * 读取配置文件
 * 
 *
 */
public class CfgUtil {

	private static Logger logger = Logger.getLogger(CfgUtil.class);

	/** 系统配置 */
	private static Properties properties = null;
	
	private static  CfgUtil cfg = new CfgUtil();
    
	private CfgUtil () {};

	/**
	 * 获取单例模式
	 * @return
	 */
	public  static CfgUtil getInstance() {
		
		logger.info("Loading config files !");
        
		if (properties == null) {
			
			// 加载服务系统配置
			initSysConf();
						
		}
		
		logger.info("Load config files success !");
		
		return cfg;
		
	}

	
	/**
	 * 加载 系统 系统 配置参数
	 * 
	 */
	private synchronized static void initSysConf() {
		
		InputStream confInputStream = null;
		
		try {
		
			try {
			
				properties = new Properties();
				
				confInputStream = CfgUtil.class.getClassLoader().getResourceAsStream(ApplicationConstant.CONF_NAME);

				properties.load(confInputStream);

			} finally {
				
				confInputStream.close();
			}
		} catch (Exception e) {
			
			logger.error("Load sysConfig failed !", e);
		}
		logger.info("Load sysConfig file success !");
	}


	/**
	 * 获取系统配置信息属性
	 * 
	 * @param key
	 *            配置信息键
	 * @return String 配置信息的值
	 */
	public static String getSystemConfig(String key) {
		return properties.getProperty(key);
	}

	/**
	 * 获取配置信息的 布尔值
	 * 
	 * @param key
	 *            配置信息键
	 * @return boolean 配置信息的值
	 */
	public static boolean getSysBoolean(String key) {
		return Boolean.parseBoolean(properties.getProperty(key));
	}

	/**
	 * 获取配置信息的 数字类型值
	 * 
	 * @param key
	 *            配置信息键
	 * @return boolean 配置信息的值
	 */
	public static int getSysInt(String key) {
		return Integer.parseInt(properties.getProperty(key));
	}

	
}
